package Ventanas.usuario;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import util.GetFrame;
import util.Varias;
import BaseDeDatos.ConsultasSensor;
import ClasesBasicas.Sensor;

/**
 *
 * @author Nerea
 */
public class PanelMenu extends javax.swing.JPanel implements ActionListener{

	// Variables declaration - do not modify
    private javax.swing.JButton bOffSensor;
    private javax.swing.JButton bOnSensor;
    private javax.swing.JButton bSalir;
    private javax.swing.JLabel estadoGPS;
    private javax.swing.JLabel estadoSensor;
    private javax.swing.JButton bhistoricoMedic;
    private javax.swing.JButton blistaSensores;
    private javax.swing.JButton bsubirFoto;
    private javax.swing.JButton bvalorSensor;
    private javax.swing.JButton bOnGPS;
    private javax.swing.JButton bOffGPS;
    private javax.swing.JComboBox comboModificarSensor;
    private javax.swing.JComboBox comboValorActual;
    private javax.swing.JComboBox comboHistorico;
    private List<Sensor> sensores = ConsultasSensor.getSensores();
    private String respuesta;
    private JLabel fondo;
    // End of variables declaration
    
    public PanelMenu() {

    	blistaSensores = new javax.swing.JButton();
        bhistoricoMedic = new javax.swing.JButton();
        estadoSensor = new javax.swing.JLabel();
        estadoGPS = new javax.swing.JLabel();
        bvalorSensor = new javax.swing.JButton();
        bsubirFoto = new javax.swing.JButton();
        bSalir = new javax.swing.JButton();
        bOnSensor = new javax.swing.JButton();
        bOffSensor = new javax.swing.JButton();
        bOnGPS = new javax.swing.JButton();
        bOffGPS = new javax.swing.JButton();
        comboModificarSensor = new javax.swing.JComboBox();
        comboValorActual = new javax.swing.JComboBox();
        comboHistorico = new javax.swing.JComboBox();
        fondo = new JLabel();
        
        setLayout(null);
        
        this.setBackground(new Color(3, 41, 51));

        blistaSensores.setText("Lista sensores");
        add(blistaSensores);
        blistaSensores.setBounds(260, 230, 210, 38);
        blistaSensores.addActionListener(this);

        bhistoricoMedic.setText("Historico mediciones");
        add(bhistoricoMedic);
        bhistoricoMedic.setBounds(260, 280, 210, 37);
        bhistoricoMedic.addActionListener(this);

        estadoSensor.setText("Modificar estado sensor:");
        estadoSensor.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
		estadoSensor.setForeground(new java.awt.Color(255, 255, 255));
        add(estadoSensor);
        estadoSensor.setBounds(260, 330, 210, 36);

        estadoGPS.setText("Modificar estado GPS:");
        estadoGPS.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
		estadoGPS.setForeground(new java.awt.Color(255, 255, 255));
        add(estadoGPS);
        estadoGPS.setBounds(260, 380, 210, 33);

        bvalorSensor.setText("Valor actual sensor");
        add(bvalorSensor);
        bvalorSensor.setBounds(260, 430, 210, 36);
        bvalorSensor.addActionListener(this);

        bsubirFoto.setText("Obtener foto");
        add(bsubirFoto);
        bsubirFoto.setBounds(260, 480, 210, 35);
        bsubirFoto.addActionListener(this);

        bSalir.setText("Salir");
        add(bSalir);
        bSalir.setBounds(650, 520, 90, 40);
        bSalir.addActionListener(this);

        bOnSensor.setText("ON");
        add(bOnSensor);
        bOnSensor.setBounds(480, 330, 80, 30);
        bOnSensor.addActionListener(this);

        bOffSensor.setText("OFF");
        add(bOffSensor);
        bOffSensor.setBounds(580, 330, 80, 30);
        bOffSensor.addActionListener(this);

        bOnGPS.setText("ON");
        add(bOnGPS);
        bOnGPS.setBounds(480, 380, 80, 30);
        bOnGPS.addActionListener(this);

        bOffGPS.setText("OFF");
        add(bOffGPS);
        bOffGPS.setBounds(580, 380, 80, 30);
        bOffGPS.addActionListener(this);
        
        cargarCombo(comboModificarSensor, sensores);
        add(comboModificarSensor);
        comboModificarSensor.setBounds(120, 330, 90, 30);
        comboModificarSensor.addActionListener(this);
        
        Varias.cargarComboSensores(comboValorActual, sensores);
        add(comboValorActual);
        comboValorActual.setBounds(120, 430, 90, 30);
        comboValorActual.addActionListener(this);
        
        Varias.cargarComboSensores(comboHistorico, sensores);
        add(comboHistorico);
        comboHistorico.setBounds(120, 280, 90, 30);
        
        fondo.setIcon(new ImageIcon("src/resources/onda.png"));
		add(fondo);
		fondo.setBounds(125, 10, 516, 290);
    }// </editor-fold>

	@Override
	public void actionPerformed(ActionEvent arg0) {
		Ventana ventana = GetFrame.getVentana(this);
		respuesta = "";
		
		if(arg0.getSource()==blistaSensores)
		{
			ventana.escribir("LISTSENSOR"+'\n');
			respuesta = ventana.leer();
			String array [] = respuesta.split("%%");
			respuesta=Varias.formatear(array);
			JOptionPane.showMessageDialog(null, respuesta, "Lista de Sensores", JOptionPane.INFORMATION_MESSAGE);
			this.setVisible(false);
			PanelMenu panel = new PanelMenu();
			ventana.getContentPane().add(panel,0);
			panel.setVisible(true);
		}
		if(arg0.getSource()==bhistoricoMedic)
		{
			ventana.escribir("HISTORICO "+comboHistorico.getSelectedItem()+'\n');
			respuesta = ventana.leer();
			if(respuesta.contains("223"))
			{
				String array [] = respuesta.split("%%");
				respuesta=Varias.formatear(array);
				JOptionPane.showMessageDialog(null, respuesta, "Historico del sensor "+comboHistorico.getSelectedItem(), JOptionPane.INFORMATION_MESSAGE);
			}
			else if(respuesta.contains("524")||respuesta.contains("525"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Error Historico Sensor", JOptionPane.ERROR_MESSAGE);
			}
		}
		if(arg0.getSource()==bOnSensor)
		{
			ventana.escribir("ON "+comboModificarSensor.getSelectedItem()+'\n');
			respuesta=ventana.leer();
			if(respuesta.contains("313"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "On Sensor "+comboModificarSensor.getSelectedItem(), JOptionPane.INFORMATION_MESSAGE);
			}
			else if(respuesta.contains("527") || respuesta.contains("528"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Error al encender el sensor", JOptionPane.ERROR_MESSAGE);
			}
			}
		if(arg0.getSource()==bOffSensor)
		{
			ventana.escribir("OFF "+comboModificarSensor.getSelectedItem()+'\n');
			respuesta = ventana.leer();
			if(respuesta.contains("314"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Off Sensor "+comboModificarSensor.getSelectedItem(), JOptionPane.INFORMATION_MESSAGE);
			}
			else if(respuesta.contains("527") || respuesta.contains("529"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Error al apagar el sensor ", JOptionPane.ERROR_MESSAGE);
			}
			}
			
		if(arg0.getSource()==bOnGPS)
		{
			ventana.escribir("ONGPS"+'\n');
			respuesta = ventana.leer();
			if(respuesta.contains("315"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "On Gps ", JOptionPane.INFORMATION_MESSAGE);
			}
			else if(respuesta.contains("529"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Error al activar GPS", JOptionPane.ERROR_MESSAGE);
			}
		}
		if(arg0.getSource()==bOffGPS)
		{
			ventana.escribir("OFFGPS"+'\n');
			respuesta = ventana.leer();
			if(respuesta.contains("316"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Off Gps ", JOptionPane.INFORMATION_MESSAGE);
			}
			else if(respuesta.contains("530"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Error al apagar GPS", JOptionPane.ERROR_MESSAGE);
			}
		}
		if(arg0.getSource()==bvalorSensor)
		{
			ventana.escribir("GET_VALACT "+comboValorActual.getSelectedItem()+'\n');
			respuesta = ventana.leer();
			if(respuesta.contains("224"))
			{
				String array [] = respuesta.split("%%");
				respuesta=Varias.formatear(array);
				JOptionPane.showMessageDialog(null, respuesta, "Valor actual del sensor "+comboValorActual.getSelectedItem(), JOptionPane.INFORMATION_MESSAGE);
			}
			else if(respuesta.contains("524")||respuesta.contains("525")||respuesta.contains("526"))
			{
				JOptionPane.showMessageDialog(null, respuesta, "Error al obtener valor actual", JOptionPane.ERROR_MESSAGE);
			}
		}
	}

	
	public void cargarCombo(JComboBox combo, List<Sensor> lista)
	{
		for(int i=0; i<lista.size();i++)
		{
			combo.addItem(lista.get(i).getId_sensor());
		}
	}
    
}

